1. Technical Field:
The present invention relates in general to the field of computers, and, in particular, to encryption and decryption of data communicated between computers. Still more particularly, the present invention relates to an improved method and system for storing user cryptology keys on a server by a client user.
2. Description of the Related Art:
Personal computers and computer networks, including the Internet, are designed to be open and flexible for ease of access to users. However, this openness presents security problems when confidential communication between computers is desired, such as when transmitting messages containing financial information, business secrets, personal information, etc. To provide security for communications between two computers in such a network, messages are often encrypted. Encryption typically is performed using a cryptology key (“key”), which is a cipher having a predetermined value, that is applied using an algorithm to a string or block of unencrypted data to produce encrypted data, or to decrypt encrypted data. Encryption that uses the same key to encrypt and decrypt a message is known as symmetric-key cryptography. Symmetric-key cryptography systems are simple and fast, but their main drawback is that the two parties must somehow exchange the key in a secure way. A second type of encryption, asymmetric encryption, avoids this problem by using two keys: a public key and a private key. The public key is available to anyone to encode a message to be sent to a receiving user. The private key is available only to the receiving user to decrypt the message. Alternatively, the private key may be used to encrypt the message and the public key may be used to decrypt the message. A popular method using asymmetric encryption is known as a Public Key Infrastructure (PKI).
PKI consists of a certificate authority (CA) that issues and verifies to the users a digital certificate, which includes the public key. The CA simultaneously creates the public key and the private key. The public key is made publicly available as part of the digital certificate in a directory that all parties can access, while the private key is given only to the requesting party. Typically, the public key is used to encrypt data, and the private key is used to decrypt the data. A popular algorithm used in encryption and authentication systems using public and private keys is RSA, named in 1977 for its inventors Ron Rivest, Adi Shamir and Leonard Adleman. RSA uses two large random prime numbers that are multiplied together and manipulated with modulus arithmetic such that the receiver holding the private key can decrypt any message from any party that has been encrypted with the public key. Other popular cryptographic algorithms include those based on a Secure Hash Algorithm (SHA), an Advanced Encryption Standard (AES) used by U. S. Government organizations, a Data Encryption Standard (DES) and Hashing Message Authenticating Code (HMAC).
In response to a need to enhance the security of computer systems, the industry working group Trusted Computing Platform Alliance (TCPA) was formed in October 1999 by Compaq Computers, Inc. (Compaq), Hewlett-Packard Corporation (HP), International Business Machines Inc. (IBM), Intel Inc. and Microsoft Inc. The TCPA has established standards for embedding security functionality in computer systems. TCPA Main Specification Version 1.1 is a standard defining how a computer system can utilize asymmetric encryption by creating its own public/private key pairs in a TCPA subsystem of the computer system, in a manner analogous to that of a CA in a PKI. The TCPA subsystem, typically using a hardware chip called a Trusted Platform Module (TPM), uses cryptographic algorithms based on RSA, DES, SHA, HMAC and AES to generate public/private key pairs. A TCPA-enabled computer contains a TPM or a TPM equivalent, and is able to perform cryptology functions as defined by the TCPA standards.
After generating a private encryption key, typically an RSA 2048-bit private key, a TCPA-enabled computer stores unprotected private encryption keys in memory accessible only to the TPM. Thus, only the TCPA-enabled machine that generated a private key in its TPM has access to that private key. A user is unable to use any computer other than the one that generated the private key, and thus “free seating” at any public or network computer does not allow the user access to his private key for encrypting messages and data. To address this problem, one solution the prior art offers is “smart cards.”
A smart card is a small device the size of a credit card that contains memory and possibly processing logic. The smart card stores a user's private key, which is downloaded from a TCPA-enabled machine that generated the user's private key, in a nonvolatile memory in the smart card. The smart card is inserted into any computer having a smart card reader. The smart card reader reads the private key from the smart card, typically after the user has typed a password into the computer, and loads the user's private key in the computer's memory. Three main weaknesses of smart cards are 1) only computers with smart card readers can use smart cards; 2) smart card readers can be tampered with to “steal” the private key from the smart card and store it in a location known by the pirate who tampered with the smart card reader; and 3) the smart card can be lost or stolen.
Thus, there is a need for a method and system that allows a user to free seat at any TCPA-enable computer using the user's private key without the need of additional hardware or hardware interface.